package dao;

import java.util.List;

import hbt.HibernateUtil;

import negocio.Caja;
import negocio.CierreCaja;
import negocio.ComisionMozo;

import org.hibernate.Session;
import org.hibernate.SessionFactory;

public class CajaDAO {

	private static CajaDAO instancia;
	private static SessionFactory sf;
	private Session session = null;
	
	public static CajaDAO getInstancia() {
		if(instancia==null){
			instancia=new CajaDAO();
			sf=HibernateUtil.getSessionFactory();
		}
		return instancia;
	}
	
	private Session getSession()
	{
		if(session == null || !session.isOpen())
			session = sf.openSession();
		return session;
	}
	
	public void closeSession(){
		if (session.isOpen()) session.close();
	}
	
	public void persistComisionMozos(List<ComisionMozo> lista){
		Session s = getSession();
		s.beginTransaction();
		for(ComisionMozo c : lista)
			s.persist(c);
		s.flush();
		s.getTransaction().commit();
	}

	public void PersistirCierreDeCaja(CierreCaja cierre) {
		Session s = getSession();
		s.beginTransaction();
		s.persist(cierre);
		s.flush();
		s.getTransaction().commit();
	}

	public void update(Caja caja) {
		Session s = getSession();
		s.beginTransaction();
		if(caja.getId_caja() != 0)
			s.merge(caja);
		else
			s.saveOrUpdate(caja);
		s.flush();
		s.getTransaction().commit();
		closeSession();
	}
}
